﻿#pragma once

#include "ais_base.h"

namespace CAGD
{

/**
 * 交互空立方体.
 */
class AIS_Box : public AIS_Base
{
  public:
    /**
     * @brief 交互体的包围盒.
     * @see
     */
    AIS_Box();

    /**
     * @brief 刷新数据.
     * @see
     */
    void UpdateArray() override;

    /**
     * @brief 获得类型.
     * @return
     * @see
     */
    AIS_Type GetType() const override;

    /**
     * @brief 刷新信息.
     * @return
     * @see
     */
    void UpdateInfo() override;

    /**
     * @brief 消息处理.
     * @param mess
     * @see
     */
    void RecvMessage(Message mess) override;

    /**
     * @brief 获得包围盒上的点.
     * @return
     * @see
     */
    std::vector<BPntf> GetPoints() const;

    /**
     * @brief 获得包围盒.
     * @return
     * @see
     */
    BBox GetBBox() const;

    /**
     * @brief 碰撞检测.
     * @return
     * @see
     */
    bool Collision(Point pos) const;

  protected:
    BBox m_box;
};

} // namespace CAGD
